<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3//EN">
<HTML><HEAD>
<TITLE>IBM Visualization Data Explorer Programmer&#39;s Reference</TITLE>

<META HTTP-EQUIV="abstract" CONTENT="IBM Visualization Data Explorer
Programmer&#39;s Reference">
<META HTTP-EQUIV="contact" CONTENT="IBM Visualization Data Explorer
(ibmdx@watson.ibm.com)">
<META HTTP-EQUIV="owner" CONTENT="IBM Visualization Data Explorer
(ibmdx@watson.ibm.com)">
<META HTTP-EQUIV="updated" CONTENT="Tue, 16 Sep 1997 ">
<META HTTP-EQUIV="review" CONTENT="Fri, 14 Aug 1998 ">

<META HTTP-EQUIV="keywords" CONTENT="GRAPHICS VISUALIZATION VISUAL PROGRAM DATA
MINING">
<meta http-equiv="content-type" content="text/html;charset=ISO-8859-1">
</HEAD><BODY BGCOLOR="#FFFFFF">

<A NAME="Top_Of_Page"></A>
<H1>IBM Visualization Data Explorer Programmer&#39;s Reference</H1>
<B>&#91; <A HREF="#Bot_Of_Page">Bottom of Page</A> &#124; <A
HREF="progu042.htm">Previous Page</A> &#124; <A HREF="progu044.htm">Next
Page</A> &#124; <A HREF="../proguide.htm#ToC">Table of Contents</A> &#124; <A
HREF="progu037.htm#PToC13">Partial Table of Contents</A> &#124; <A
HREF="progu344.htm#HDRINDEX_START">Index</A> &#93;</B><HR><P>
<HR>
<H2><A NAME="HDRMEML" HREF="progu037.htm#PToC_89">11.7 Memory Leaks</A></H2>
<A NAME="IDX383"></A>
<A NAME="IDX384"></A>
<A NAME="IDX385"></A>
<A NAME="IDX386"></A>
<P>
A memory leak will occur if the memory allocated by a module is not
freed before that module returns its output(s).
(See <A HREF="progu023.htm#HDRMEMALC">"Allocating and Freeing Memory"</A> for a
list of Objects that typically
need freeing.)
Typically, if there is a memory leak, Data Explorer runs for some time.
Then, after allocating all available memory, it stops executing and
generates an error message that it is out of memory.
It can resume execution only after the server has been disconnected
and restarted.
<P>
You can check a module for a memory leak by running it several times,
together with the Usage module.
If the memory managed by the executive is flushed after each execution,
memory that is allocated by a module and not freed before returning
will cause the Usage module to report an increase in memory.
The following Data Explorer script checks for a leak:
<PRE>
macro showleak()
&#123;
   output = YourModule(input, ...);
   Print(output);
&#125;
&middot;
(any modules necessary to produce input for your module)
&middot;
&nbsp;
showleak();
showleak();
Executive("flush cache");
Usage("memory", 0);
showleak();
Executive("flush cache");
Usage("memory", 0);
showleak();
Executive("flush cache");
Usage("memory", 0);
</PRE>
<P>
Each call to Usage prints out the amount of memory used in both the
small and the large arena.
Unless there is a memory leak in the module, these amounts will remain
constant.
<TABLE><TR><TD ALIGN="LEFT" VALIGN="TOP"><B>Note:</B></TD><TD ALIGN="LEFT"
VALIGN="TOP">It is important to run the executable in "readahead off"
mode.
The amounts reported by Usage will be distorted if the Data Explorer
executive reads the script ahead of execution.
Specify:
<PRE>
dx -exec <VAR>your_directory/your_executable</VAR> -readahead off -script
</PRE>
</td></tr></table>
<P><HR><B>&#91; <A HREF="#Top_Of_Page">Top of Page</A> &#124; <A
HREF="progu042.htm">Previous Page</A> &#124; <A HREF="progu044.htm">Next
Page</A> &#124; <A HREF="../proguide.htm#ToC">Table of Contents</A> &#124; <A
HREF="progu037.htm#PToC13">Partial Table of Contents</A> &#124; <A
HREF="progu344.htm#HDRINDEX_START">Index</A> &#93;</B> <br><b>&#91;<a
href="../allguide.htm">Data Explorer Documentation</a>&nbsp;&#124;&nbsp;<a
href="../qikguide.htm">QuickStart Guide</a>&nbsp;&#124;&nbsp;<a
href="../usrguide.htm">User&#39;s Guide</a>&nbsp;&#124;&nbsp;<a
href="../refguide.htm">User&#39;s Reference</a>&nbsp;&#124;&nbsp;<a
href="../proguide.htm">Programmer&#39;s Reference</a>&nbsp;&#124;&nbsp;<a
href="../insguide.htm">Installation and Configuration
Guide</a>&nbsp;&#93;</b><br><p><b>&#91;<a
href="http://www.research.ibm.com/dx">Data Explorer Home
Page</a>&#93;</b><p><HR ALIGN=LEFT WIDTH=600><b>&#91;<A
HREF="http://www.ibm.com/">IBM Home Page</A>&nbsp;&#124;&nbsp;<A
HREF="http://www.ibm.com/Orders/">Order</A>&nbsp;&#124;&nbsp;<A
HREF="http://www.ibm.com/Search/">Search</A>&nbsp;&#124;&nbsp;<A
HREF="http://www.ibm.com/Assist/">Contact IBM</A>&nbsp;&#124;&nbsp;<A
HREF="http://www.ibm.com/Legal/">Legal</A>&nbsp;&#93;</b><hr><p>
<A NAME="Bot_Of_Page"></A>
</BODY></HTML>
